<p><strong><a href="http://fluentserializer.codeplex.com">FluentSerializer 0.80</a></strong>&nbsp;Codename <em>The first step is always the hardest</em><br /> <br /> by M. Alberti&nbsp;(xanatos(at)live.it)</p>
<ul>
<li>
<p>What is FluentSerializer?</p>
<p>FluentSerializer is a fluent library for C# and .NET that lets the user serialize/deserialize data in an user-defined binary format. The user creates Fluent Expressions that describe the serialization format and the library compiles and uses them. It is the <em>real</em> reason I created the <a href="http://fluentstatement.codeplex.com">FluentStatement</a> library.</p>
<p>It was born the day I asked this <a href="http://stackoverflow.com/q/6397196">question</a> on <a href="http://stackoverflow.com">StackOverflow</a> (technically it was born some days/months after this event, when I got tired no one had given me a good reply).</p>
</li>
<li>
<p>Why is this library useful?</p>
<p>The C# 4.0 and 4.5 don't have facilities to serialize/deserialize complex data types written in legacy formats. This library tries to solve this problem. It's very much a work in progress, but it's quite stable.</p>
</li>
<li>
<p>What versions of .NET does it support?</p>
<p>FluentSerializer requires .NET 4.0. It has been tested with Mono 2.10.8.</p>
</li>
<li>
<p>What license is FluentSerializer released under?</p>
<p>FluentSerializer is released under the MIT license. If you need something more liberal (a beerware license?) you can ask me.</p>
</li>
<li>
<p>What is included in the solution?</p>
<p>The solution includes the projects:</p>
<ul>
<li>
<p>FluentSerializer, the main library</p>
</li>
<li>
<p>Sample, a small code sample that shows how to serialize many types</p>
</li>
<li>
<p>Tests, the unit test that tests all the serializers (not finished... not even begun.)</p>
</li>
</ul>
</li>
<li>
<p>Why is your code so obsessively-compulsively tidy?</p>
<p>FluentSerializer (and its author) are proud users of <a href="http://stylecop.codeplex.com"> StyleCop</a> (minimum version 4.7). A clean code is a sign of respect for those who will use it. The projects included in the solution will try to use the MSBuild include file for StyleCop if present in the folder <em>$(ProgramFiles)\MSBuild\StyleCop\v4.7</em> folder (where <em>$(ProgramFiles)</em> is normally <em>C:\Program Files</em> or <em>C:\Program Files (x86)</em>). To install the MSBuild include file you have to check the <em>MSBuild integration</em> checkbox during the installation of StyleCop.</p>
</li>
<li>
<p>Why isn't the code commented?</p>
<p>FluentSerializer (and its author) are proud users of StyleCop. Sadly the author is too much lazy to document the code. This is a sign of disrespect for those who will use it, but the author isn't very worried :-) Fortunately for the author, there are settings  in StyleCop to disable the checking of comments.</p>
</li>
<li>
<p>Why is your English so much poor?</p>
<p>FluentSerializer has been written by an author who speaks very well Italian, but not so well British English or American English (or any other English idiom). This is unfortunate, perhaps even tragic :-)</p>
</li>
<li>
<p>Why is this README a carbon copy of the README of <a href="http://fluentstatement.codeplex.com">FluentStatement</a>?</p>
<p>No more questions for today, the author is very tired :-)</p>
</li>
<li>
<p>Known bugs</p>
<ul>
<li>
<p><em>Serializer&lt;T&gt;.Dump()</em> doesn't work with type that serialize readonly fields that need assignation (i.e. <em>int readonly MyVar</em>).</p>
</li>
<li>
<p><em>Can't convert-and-serialize (serialize an int as short, for example, or a short as an int).</p>
</li>
<li>
<p><em>No support for endianness control of the serialized data.</p>
</li>
<li>
<p><em>No support for zero-terminated strings (C strings).</p>
</li>
<li>
<p><em>No support for zero-terminated collections (like <em>envp</em> in C).</p>
</li>
<li>
<p><em>No support for specifying if a type must be <em>Dispose</em>(d) or if an object must be reused or destroyed and recreated.</p>
</li>
<li>
<p><em>The parameters of the serializers should be sanitized, so if a non-parameter is passed as a parameter (especially through <em>Expression</em> "inclusion") then the value is cached in a temporary variable.</p>
</li>
</ul>
</li>
<li>
<p>Release history:</p>
<ul>
<li>
<p>2012-08-31 Version 0.80 Codename: <em>The first step is always the hardest</em></p>
<p>First public release. Very beta quality.</p>
</li>
</ul>
</li>
</ul>
<p>The README is finished. Now go playing with the library.</p>